impl = GDK_SURFACE_IMPL_BROADWAY (surface->impl);
impl->visible = TRUE;
- _gdk_make_event (GDK_SURFACE (surface), GDK_MAP, NULL, FALSE);
-
- if (surface->parent)
- _gdk_make_event (GDK_SURFACE (surface), GDK_MAP, NULL, FALSE);
+ /* FIXME: update state ? */
broadway_display = GDK_BROADWAY_DISPLAY (gdk_surface_get_display (surface));
if (_gdk_broadway_server_surface_show (broadway_display->server, impl->id))
impl = GDK_SURFACE_IMPL_BROADWAY (surface->impl);
impl->visible = FALSE;
- _gdk_make_event (GDK_SURFACE (surface), GDK_UNMAP, NULL, FALSE);
-
- if (surface->parent)
- _gdk_make_event (GDK_SURFACE (surface), GDK_UNMAP, NULL, FALSE);
+ /* FIXME: update state ? */
broadway_display = GDK_BROADWAY_DISPLAY (gdk_surface_get_display (surface));
PROP_CURSOR,
PROP_DISPLAY,
PROP_STATE,
+ PROP_MAPPED,
LAST_PROP
};
GDK_TYPE_SURFACE_STATE, GDK_SURFACE_STATE_WITHDRAWN,
G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+ properties[PROP_MAPPED] =
+ g_param_spec_boolean ("mapped",
+ P_("Mapped"),
+ P_("Mapped"),
+ FALSE,
+ G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (object_class, LAST_PROP, properties);
/**
g_value_set_flags (value, surface->state);
break;
+ case PROP_MAPPED:
+ g_value_set_boolean (value, GDK_SURFACE_IS_MAPPED (surface));
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
surface_remove_from_pointer_info (surface, display);
g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_STATE]);
+ g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_MAPPED]);
break;
}
}
{
surface->state = 0;
g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_STATE]);
+ g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_MAPPED]);
}
did_show = _gdk_surface_update_viewable (surface);
impl_class->show (surface, !did_show ? was_mapped : TRUE);
}
- if (!was_mapped && !gdk_surface_has_impl (surface))
- {
- _gdk_make_event (surface, GDK_MAP, NULL, FALSE);
-
- if (surface->parent)
- _gdk_make_event (surface, GDK_MAP, NULL, FALSE);
- }
-
if (!was_mapped || did_raise)
{
recompute_visible_regions (surface, FALSE);
{
surface->state = GDK_SURFACE_STATE_WITHDRAWN;
g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_STATE]);
+ g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_MAPPED]);
}
if (was_mapped)
recompute_visible_regions (surface, FALSE);
- if (was_mapped && !gdk_surface_has_impl (surface))
- {
- _gdk_make_event (surface, GDK_UNMAP, NULL, FALSE);
-
- if (surface->parent)
- _gdk_make_event (surface, GDK_UNMAP, NULL, FALSE);
- }
-
/* Invalidate the rect */
if (was_mapped)
gdk_surface_invalidate_in_parent (surface);
gdk_surface_withdraw (GdkSurface *surface)
{
GdkSurfaceImplClass *impl_class;
- gboolean was_mapped;
GdkGLContext *current_context;
g_return_if_fail (GDK_IS_SURFACE (surface));
if (surface->destroyed)
return;
- was_mapped = GDK_SURFACE_IS_MAPPED (surface);
-
if (gdk_surface_has_impl (surface))
{
impl_class = GDK_SURFACE_IMPL_GET_CLASS (surface->impl);
impl_class->withdraw (surface);
- if (was_mapped)
- {
- _gdk_make_event (surface, GDK_UNMAP, NULL, FALSE);
-
- if (surface->parent)
- _gdk_make_event (surface, GDK_UNMAP, NULL, FALSE);
- }
-
current_context = gdk_gl_context_get_current ();
if (current_context != NULL && gdk_gl_context_get_surface (current_context) == surface)
gdk_gl_context_clear_current ();
break;
case GDK_FOCUS_CHANGE:
- case GDK_MAP:
- case GDK_UNMAP:
case GDK_DELETE:
case GDK_DESTROY:
default:
gdk_surface_set_state (GdkSurface *surface,
GdkSurfaceState new_state)
{
+ gboolean was_mapped, mapped;
g_return_if_fail (GDK_IS_SURFACE (surface));
if (new_state == surface->state)
* inconsistent state to the user.
*/
+ was_mapped = GDK_SURFACE_IS_MAPPED (surface);
+
surface->state = new_state;
+ mapped = GDK_SURFACE_IS_MAPPED (surface);
+
_gdk_surface_update_viewable (surface);
/* We only really send the event to toplevels, since
{
case GDK_SURFACE_TOPLEVEL:
case GDK_SURFACE_TEMP: /* ? */
- g_object_notify (G_OBJECT (surface), "state");
+ g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_STATE]);
break;
case GDK_SURFACE_CHILD:
default:
break;
}
+
+ if (was_mapped != mapped)
+ g_object_notify_by_pspec (G_OBJECT (surface), properties[PROP_MAPPED]);
}
void
CASE (GDK_ENTER_NOTIFY);
CASE (GDK_LEAVE_NOTIFY);
CASE (GDK_FOCUS_CHANGE);
- CASE (GDK_MAP);
- CASE (GDK_UNMAP);
CASE (GDK_PROXIMITY_IN);
CASE (GDK_PROXIMITY_OUT);
CASE (GDK_DRAG_ENTER);
gdk_device_ungrab (device, msg -> time);
}
- /* Send MAP events */
- if ((windowpos->flags & SWP_SHOWWINDOW) &&
- !GDK_SURFACE_DESTROYED (window))
- {
- event = gdk_event_new (GDK_MAP);
- event->any.surface = window;
- _gdk_win32_append_event (event);
- }
-
/* Update window state */
if (windowpos->flags & (SWP_STATECHANGED | SWP_SHOWWINDOW | SWP_HIDEWINDOW))
{
if ((windowpos->flags & SWP_HIDEWINDOW) &&
!GDK_SURFACE_DESTROYED (window))
{
- /* Send UNMAP events */
- event = gdk_event_new (GDK_UNMAP);
- event->any.surface = window;
- _gdk_win32_append_event (event);
-
/* Make transient parent the forground window when window unmaps */
impl = GDK_SURFACE_IMPL_WIN32 (window->impl);